// 角色管理相关类型定义

/**
 * 角色信息接口
 */
export interface Role {
  /** 角色ID */
  roleId: number;
  /** 角色名称 */
  roleName: string;
  /** 启用状态 1-启用 0-停用 */
  isEnabled: string;
  /** 角色描述 */
  roleDesc?: string;
  /** 创建时间 */
  createTime?: string;
  /** 更新时间 */
  updateTime?: string;
  /** 创建人 */
  createBy?: string;
  /** 更新人 */
  updateBy?: string;
}

/**
 * 角色表单接口（新增/编辑时使用）
 */
export interface RoleForm {
  /** 角色ID（编辑时需要） */
  roleId?: number | null;
  /** 角色名称 */
  roleName: string;
  /** 启用状态 */
  isEnabled: string;
  /** 角色描述 */
  roleDesc?: string;
  menuIdList?: any[];
}

/**
 * 角色查询参数接口
 */
export interface RoleQuery {
  /** 角色名称（模糊搜索） */
  roleName?: string;
  /** 启用状态 */
  isEnabled?: string;
  /** 当前页码 */
  pageNo: number;
  /** 每页条数 */
  pageSize: number;
}

/**
 * 角色列表响应接口
 */
export interface RoleListResponse {
  /** 角色列表 */
  list: Role[];
  /** 总条数 */
  total: number;
  /** 当前页 */
  pageNo: number;
  /** 每页条数 */
  pageSize: number;
  /** 总页数 */
  totalPages: number;
}

/**
 * 权限信息接口
 */
export interface Permission {
  /** 权限ID */
  permissionId: number;
  /** 权限名称 */
  permissionName: string;
  /** 权限代码 */
  permissionCode: string;
  /** 权限类型 menu-菜单 button-按钮 api-接口 */
  permissionType: 'menu' | 'button' | 'api';
  /** 父级权限ID */
  parentId?: number;
  /** 权限路径 */
  path?: string;
  /** 图标 */
  icon?: string;
  /** 排序 */
  sort?: number;
  /** 启用状态 */
  isEnabled: string;
}

/**
 * 角色权限关联接口
 */
export interface RolePermission {
  /** 角色ID */
  roleId: number;
  /** 权限ID */
  permissionId: number;
}

/**
 * 角色权限设置接口
 */
export interface RolePermissionSetting {
  /** 角色ID */
  roleId: number;
  /** 权限ID列表 */
  permissionIds: number[];
}

/**
 * 角色操作类型枚举
 */
export enum RoleAction {
  /** 新增 */
  ADD = 'add',
  /** 编辑 */
  EDIT = 'edit',
  /** 查看详情 */
  VIEW = 'view',
  /** 启用 */
  ENABLE = 'enable',
  /** 停用 */
  DISABLE = 'disable',
  /** 删除 */
  DELETE = 'delete',
  /** 权限设置 */
  PERMISSION = 'permission'
}

/**
 * 角色状态枚举
 */
export enum RoleStatus {
  /** 启用 */
  ENABLED = '1',
  /** 停用 */
  DISABLED = '0'
}

/**
 * 权限类型枚举
 */
export enum PermissionType {
  /** 菜单 */
  MENU = 'menu',
  /** 按钮 */
  BUTTON = 'button',
  /** 接口 */
  API = 'api'
}
